#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>


//bool isSameTree(struct TreeNode* p, struct TreeNode* q)
//{
//    if (p == NULL && q == NULL)
//        return true;
//    if (p == NULL || q == NULL)
//        return false;
//
//    if (p->val != q->val)
//        return false;
//
//    return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
//}

//bool _isSymmetric(struct TreeNode* left, struct TreeNode* right)
//{
//    if (left == NULL && right == NULL)
//        return true;
//    if (left == NULL || right == NULL)
//        return false;
//
//    if (left->val != right->val)
//        return false;
//
//    return _isSymmetric(left->left, right->right) && _isSymmetric(left->right, right->left);
//}
//
//bool isSymmetric(struct TreeNode* root)
//{
//    if (root == NULL)
//        return true;
//
//    return _isSymmetric(root->left, root->right);
//}

//int maxDepth(struct TreeNode* root)
//{
//    if (root == NULL)
//        return 0;
//
//    int leftDepth = maxDepth(root->left) + 1;
//    int rightDepth = maxDepth(root->right) + 1;
//
//    return leftDepth > rightDepth ? leftDepth : rightDepth;
//}

//int minDepth(struct TreeNode* root)
//{
//    if (root == NULL)
//        return 0;
//
//    if (root->left == NULL && root->right == NULL)
//        return 1;
//
//    int min = INT_MAX;
//    if (root->left != NULL)
//    {
//        min = fmin(minDepth(root->left), min);
//    }
//    if (root->right != NULL)
//    {
//        min = fmin(minDepth(root->right), min);
//    }
//
//    return min + 1;
//}

